package com.jyw.business.ast.mapper;

import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jyw.business.ast.domain.AstInfo;
import com.jyw.business.ast.domain.dto.AstOptionDto;
import com.jyw.business.ast.domain.dto.web.AstItemPageDto;
import com.jyw.business.ast.domain.dto.web.AstPageDto;
import com.jyw.business.ast.domain.dto.web.InsUnitAstPageDto;
import com.jyw.business.ast.domain.vo.web.*;
import org.apache.ibatis.annotations.Param;

/**
 * 资产-资产信息Mapper接口
 * 
 * @author system
 * @date 2023-09-20
 */
public interface AstInfoMapper extends BaseMapper<AstInfo>
{
    /**
     * 查询资产-资产信息
     * 
     * @param id 资产-资产信息主键
     * @return 资产-资产信息
     */
    public AstInfo selectAstInfoById(Long id);

    /**
     * 查询资产-资产信息列表
     * 
     * @param astInfo 资产-资产信息
     * @return 资产-资产信息集合
     */
    public List<AstInfo> selectAstInfoList(AstInfo astInfo);

    /**
     * 查询巡检计划选择资产
     *
     * @return
     */
    List<AstInfo> selectPlanAstList();

    /**
     * 新增资产-资产信息
     * 
     * @param astInfo 资产-资产信息
     * @return 结果
     */
    public int insertAstInfo(AstInfo astInfo);

    /**
     * 修改资产-资产信息
     * 
     * @param astInfo 资产-资产信息
     * @return 结果
     */
    public int updateAstInfo(AstInfo astInfo);

    /**
     * 删除资产-资产信息
     * 
     * @param id 资产-资产信息主键
     * @return 结果
     */
    public int deleteAstInfoById(Long id);

    /**
     * 批量删除资产-资产信息
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteAstInfoByIds(Long[] ids);

    /**
     * 查询最大资产编号
     * @return
     */
    Long selectMaxNum();

    /**
     * 资产登记分页查询
     * @param dto
     * @return
     */
    List<AstPageVo> signPage(@Param("data") AstPageDto dto);

    /**
     * 通过巡检单元id查询巡检单元名称
     * @param pertainUnit
     * @return
     */
    String getPertainUnitName(@Param("id") Long pertainUnit);

    /**
     * 配置巡检项资产查询
     * @param dto
     * @return
     */
    List<AstItemPageVo> astItemList(@Param("data") AstItemPageDto dto);

    /**
     * 查询巡检单元资产选择
     *
     * @param insUnitAstPageDto
     * @return
     */
    List<InsUnitAstPageVO> pageUnitAstList(@Param("data") InsUnitAstPageDto insUnitAstPageDto);

    /**
     * 查询资产报修信息
     * @param id
     * @return
     */
    List<AstOrderFaultVo> selectOrderFault(@Param("data") Long id);

    /**
     * 查询资产的巡检信息
     * @param id
     * @return
     */
    List<AstInsVo> selectAstIns(@Param("data") Long id);

    /**
     * 查询资产转移信息
     * @param id
     * @return
     */
    List<AstTransferVo> selectAstTransfer(@Param("data") Long id);

    /**
     * 查询资产调拨信息
     * @param id
     * @return
     */
    List<AstAllocateVo> selectAstAllocate(@Param("data")Long id);

    /**
     * 查询资产借用信息
     * @param id
     * @return
     */
    List<AstBorrowVo> selectAstBorrow(@Param("data") Long id);

    /**
     * 根据巡检单位查询巡检名称
     * @param name
     * @return
     */
    Long findInsUnitByName(@Param("data") String name);

    /**
     * 资产选项
     * @param dto
     * @return
     */
    List<AstPageVo> option(@Param("data") AstOptionDto dto);

    /**
     * 导出数据
     * @param dto
     * @return
     */
    List<AstInfoExportVo> exportList(@Param("data") AstPageDto dto);
}
